package com.peiqi.aiproject.domain.vo;

import cn.hutool.http.HttpStatus;
import lombok.Data;

@Data
public class ResponseVO<T> {
    /**
     * 状态码
     */
    private int code;

    /**
     * 返回内容
     */
    private String msg;

    /**
     * 数据对象
     */
    private T data;

    public ResponseVO(int code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    public ResponseVO(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public ResponseVO(int code) {
        this.code = code;
    }

    /**
     * 返回成功消息
     * @param msg 返回内容
     * @param data 返回对象
     * @return 成功的消息
     * @param <T> 自定义实体
     */
    public static <T> ResponseVO<T> success(String msg,T data){
        return new ResponseVO<>(HttpStatus.HTTP_OK,msg,data);
    }
    /**
     * 返回成功消息
     * @param code 返回状态码
     * @param data 返回对象
     * @return 成功的消息
     * @param <T> 自定义实体
     */
    public static <T> ResponseVO<T> success(int code,T data){
        return new ResponseVO<>(code,null,data);
    }

    /**
     * 返回错误消息
     * @param code 返回状态码
     * @param data 返回对象
     * @param msg 返回内容
     * @return 成功的消息
     * @param <T> 自定义实体
     */
    public static <T> ResponseVO<T> error(int code,String msg,T data){
        return new ResponseVO<>(code,msg,data);
    }

    /**
     * 返回错误消息
     * @param code 返回状态码
     * @param msg 返回内容
     * @return
     */
    public static ResponseVO<Void> error(int code, String msg) {
        return error(code,msg,null);
    }

    public static ResponseVO<Void> success(int code) {
        return new ResponseVO<>(code);
    }
}
